/**
 * 给一个数字30000，给一个数组[2,1,9]，
 * 实现一个算法能用数组中的数据组成比给定数字小的最大数29999。
 */

function maxnum(num, arr) {
  let len = num.toString().length;
  let ans = [];
  max = 0;
  const dfs = x => {
    if (x == len) {
      t = ans.join('');
      if (t < num && t > max) {
        max = t;
      }
    } else {
      for (let i = 0; i < arr.length; i++) {
        ans.push(arr[i]);
        dfs(x + 1);
        ans.pop();
      }
    }
  }
  dfs(0)
  return max;
}

var a = maxnum(30000, [2, 1, 9]);
console.log(a);